/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.tencentcloudapi.lkeap.v20240522.models;

import com.tencentcloudapi.common.AbstractModel;
import com.tencentcloudapi.common.SSEResponseModel;
import com.google.gson.annotations.SerializedName;
import com.google.gson.annotations.Expose;
import java.util.HashMap;

public class ReconstructDocumentSSEResponse extends SSEResponseModel {

    /**
    * Task ID. The unique identifier of the current request.
    */
    @SerializedName("TaskId")
    @Expose
    private String TaskId;

    /**
    * Response type. 1: return progress information; 2: return parsing result.
    */
    @SerializedName("ResponseType")
    @Expose
    private String ResponseType;

    /**
    * Progress. Value range: 0 to 100.
    */
    @SerializedName("Progress")
    @Expose
    private String Progress;

    /**
    * Progress information.
    */
    @SerializedName("ProgressMessage")
    @Expose
    private String ProgressMessage;

    /**
    * Temporary download URL for the document parsing result. The file is a zip compressed package, and the URL is valid for 30 minutes. The compressed package contains the following folders: \*.md, \*.jsonl, \*mllm.json, images.
    */
    @SerializedName("DocumentRecognizeResultUrl")
    @Expose
    private String DocumentRecognizeResultUrl;

    /**
    * Page number where document parsing fails.
    */
    @SerializedName("FailedPages")
    @Expose
    private ReconstructDocumentFailedPage [] FailedPages;

    /**
    * 
    */
    @SerializedName("FailPageNum")
    @Expose
    private Long FailPageNum;

    /**
    * 
    */
    @SerializedName("SuccessPageNum")
    @Expose
    private Long SuccessPageNum;

    /**
    * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem. As a streaming response API, when the request is successfully completed, the RequestId will be placed in the Header "X-TC-RequestId" of the HTTP response.
    */
    @SerializedName("RequestId")
    @Expose
    private String RequestId;

    /**
     * Get Task ID. The unique identifier of the current request. 
     * @return TaskId Task ID. The unique identifier of the current request.
     */
    public String getTaskId() {
        return this.TaskId;
    }

    /**
     * Set Task ID. The unique identifier of the current request.
     * @param TaskId Task ID. The unique identifier of the current request.
     */
    public void setTaskId(String TaskId) {
        this.TaskId = TaskId;
    }

    /**
     * Get Response type. 1: return progress information; 2: return parsing result. 
     * @return ResponseType Response type. 1: return progress information; 2: return parsing result.
     */
    public String getResponseType() {
        return this.ResponseType;
    }

    /**
     * Set Response type. 1: return progress information; 2: return parsing result.
     * @param ResponseType Response type. 1: return progress information; 2: return parsing result.
     */
    public void setResponseType(String ResponseType) {
        this.ResponseType = ResponseType;
    }

    /**
     * Get Progress. Value range: 0 to 100. 
     * @return Progress Progress. Value range: 0 to 100.
     */
    public String getProgress() {
        return this.Progress;
    }

    /**
     * Set Progress. Value range: 0 to 100.
     * @param Progress Progress. Value range: 0 to 100.
     */
    public void setProgress(String Progress) {
        this.Progress = Progress;
    }

    /**
     * Get Progress information. 
     * @return ProgressMessage Progress information.
     */
    public String getProgressMessage() {
        return this.ProgressMessage;
    }

    /**
     * Set Progress information.
     * @param ProgressMessage Progress information.
     */
    public void setProgressMessage(String ProgressMessage) {
        this.ProgressMessage = ProgressMessage;
    }

    /**
     * Get Temporary download URL for the document parsing result. The file is a zip compressed package, and the URL is valid for 30 minutes. The compressed package contains the following folders: \*.md, \*.jsonl, \*mllm.json, images. 
     * @return DocumentRecognizeResultUrl Temporary download URL for the document parsing result. The file is a zip compressed package, and the URL is valid for 30 minutes. The compressed package contains the following folders: \*.md, \*.jsonl, \*mllm.json, images.
     */
    public String getDocumentRecognizeResultUrl() {
        return this.DocumentRecognizeResultUrl;
    }

    /**
     * Set Temporary download URL for the document parsing result. The file is a zip compressed package, and the URL is valid for 30 minutes. The compressed package contains the following folders: \*.md, \*.jsonl, \*mllm.json, images.
     * @param DocumentRecognizeResultUrl Temporary download URL for the document parsing result. The file is a zip compressed package, and the URL is valid for 30 minutes. The compressed package contains the following folders: \*.md, \*.jsonl, \*mllm.json, images.
     */
    public void setDocumentRecognizeResultUrl(String DocumentRecognizeResultUrl) {
        this.DocumentRecognizeResultUrl = DocumentRecognizeResultUrl;
    }

    /**
     * Get Page number where document parsing fails. 
     * @return FailedPages Page number where document parsing fails.
     */
    public ReconstructDocumentFailedPage [] getFailedPages() {
        return this.FailedPages;
    }

    /**
     * Set Page number where document parsing fails.
     * @param FailedPages Page number where document parsing fails.
     */
    public void setFailedPages(ReconstructDocumentFailedPage [] FailedPages) {
        this.FailedPages = FailedPages;
    }

    /**
     * Get  
     * @return FailPageNum 
     */
    public Long getFailPageNum() {
        return this.FailPageNum;
    }

    /**
     * Set 
     * @param FailPageNum 
     */
    public void setFailPageNum(Long FailPageNum) {
        this.FailPageNum = FailPageNum;
    }

    /**
     * Get  
     * @return SuccessPageNum 
     */
    public Long getSuccessPageNum() {
        return this.SuccessPageNum;
    }

    /**
     * Set 
     * @param SuccessPageNum 
     */
    public void setSuccessPageNum(Long SuccessPageNum) {
        this.SuccessPageNum = SuccessPageNum;
    }

    /**
     * Get The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem. As a streaming response API, when the request is successfully completed, the RequestId will be placed in the Header "X-TC-RequestId" of the HTTP response. 
     * @return RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem. As a streaming response API, when the request is successfully completed, the RequestId will be placed in the Header "X-TC-RequestId" of the HTTP response.
     */
    public String getRequestId() {
        return this.RequestId;
    }

    /**
     * Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem. As a streaming response API, when the request is successfully completed, the RequestId will be placed in the Header "X-TC-RequestId" of the HTTP response.
     * @param RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem. As a streaming response API, when the request is successfully completed, the RequestId will be placed in the Header "X-TC-RequestId" of the HTTP response.
     */
    public void setRequestId(String RequestId) {
        this.RequestId = RequestId;
    }

    public ReconstructDocumentSSEResponse() {
    }

    /**
     * NOTE: Any ambiguous key set via .set("AnyKey", "value") will be a shallow copy,
     *       and any explicit key, i.e Foo, set via .setFoo("value") will be a deep copy.
     */
    public ReconstructDocumentSSEResponse(ReconstructDocumentSSEResponse source) {
        if (source.TaskId != null) {
            this.TaskId = new String(source.TaskId);
        }
        if (source.ResponseType != null) {
            this.ResponseType = new String(source.ResponseType);
        }
        if (source.Progress != null) {
            this.Progress = new String(source.Progress);
        }
        if (source.ProgressMessage != null) {
            this.ProgressMessage = new String(source.ProgressMessage);
        }
        if (source.DocumentRecognizeResultUrl != null) {
            this.DocumentRecognizeResultUrl = new String(source.DocumentRecognizeResultUrl);
        }
        if (source.FailedPages != null) {
            this.FailedPages = new ReconstructDocumentFailedPage[source.FailedPages.length];
            for (int i = 0; i < source.FailedPages.length; i++) {
                this.FailedPages[i] = new ReconstructDocumentFailedPage(source.FailedPages[i]);
            }
        }
        if (source.FailPageNum != null) {
            this.FailPageNum = new Long(source.FailPageNum);
        }
        if (source.SuccessPageNum != null) {
            this.SuccessPageNum = new Long(source.SuccessPageNum);
        }
        if (source.RequestId != null) {
            this.RequestId = new String(source.RequestId);
        }
    }


    /**
     * Internal implementation, normal users should not use it.
     */
    public void toMap(HashMap<String, String> map, String prefix) {
        this.setParamSimple(map, prefix + "TaskId", this.TaskId);
        this.setParamSimple(map, prefix + "ResponseType", this.ResponseType);
        this.setParamSimple(map, prefix + "Progress", this.Progress);
        this.setParamSimple(map, prefix + "ProgressMessage", this.ProgressMessage);
        this.setParamSimple(map, prefix + "DocumentRecognizeResultUrl", this.DocumentRecognizeResultUrl);
        this.setParamArrayObj(map, prefix + "FailedPages.", this.FailedPages);
        this.setParamSimple(map, prefix + "FailPageNum", this.FailPageNum);
        this.setParamSimple(map, prefix + "SuccessPageNum", this.SuccessPageNum);
        this.setParamSimple(map, prefix + "RequestId", this.RequestId);

    }
}

